package com.ck.javacode.Chapter1;

/**
 * @author: caoke
 * @date: 2021/9/29 4:44 下午
 * @description:3.8 浮点类型
 */
public class FloatDetail {
    public static void main(String[] args) {
        //java 的浮点型常量（具体值）默认为double型，声明float型常量，须后加f或F
        //float num1 = 1.1;//对不对？错误 默认值是double
        float num1 = 1.1F;//对不对？对
        double num3 = 1.1;//对
        double num4 = 1.1f;//对
        //十进制数形式：如5.12 512.0f  .512(必须有小数点）
        double numb5 = .123;// 等价0。123
        //数学计数法形式：如 5.12e2[]  5.12E-2 [] e大小写都可
        double numb6 = 5.12E2;// 5.12*10的2次方 512.0
        double numb7 = 5.12E-2;// 5.12/10的2次方 0.0512
        //4、通常情况下，应该使用double型，因为它比float型更精确。【举例说明】
        double numb9 = 2.1234567851;//2.1234567851
        float numb10 = 2.1234567851F;//2.1234567
        System.out.println(numb9);
        System.out.println(numb10);
        //5、浮点数使用陷阱：2.7和8.1/3比较
        double numb11 = 2.7;//2.7
        double numb12 = 8.1/3;//2.6999999999999997
        System.out.println(numb11);
        System.out.println(numb12);// 接近2。7的一个小数而不是2。7
        // 得到一个重要的使用点 当我们对运算结果是小数的结果进行先等判断，要小心
        // 应该是以两个数的差值的绝对值，在某个精度范围内判断
        if(numb11 == numb12){
            System.out.println("相等");
        }
        // 正确的写法
        if (Math.abs(numb11 - numb12) < 0.0000001){
            System.out.println("差值非常小，到我的规定精度，认为相等");
        }
        // 可以通过java api 来看
        System.out.println(Math.abs(numb11 - numb12));

        // 细节：


    }
}
